/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jjsoft.disco.gco.ngc;

import com.jjsoft.disco.gco.dao.GenericController;
import com.jjsoft.disco.gco.mdl.Producto;
import com.jjsoft.disco.gco.mdl.Productobarra;
import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Johnny
 */
public class ProductoBarraManager {

    GenericController<Productobarra> controladorProductoBarra = new GenericController<Productobarra>();

    public void guardarProductos(List<Productobarra> listaProductos, HashMap<Integer, Double> cantidades) {
        ProductoManager pm = new ProductoManager();
        for (int i = 0; i < listaProductos.size(); i++) {
            if (listaProductos.get(i).getIdproductoBarra() == null) {
                controladorProductoBarra.create(listaProductos.get(i));
            } else {
                try {
                    controladorProductoBarra.edit(listaProductos.get(i));
                } catch (Exception ex) {
                    Logger.getLogger(ProductoBarraManager.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            double cantidad = listaProductos.get(i).getCantidad();
            try {
                cantidad -= cantidades.get(listaProductos.get(i).getIdProducto().getIdProductos());
            } catch (Exception ex) {
                cantidad -= 0d;
            }
            listaProductos.get(i).setCantidad(cantidad);

            pm.reducirStock(listaProductos.get(i).getIdProducto(), listaProductos.get(i).getCantidad());
        }
    }

    public List<Productobarra> cargarProductos(int barra) {
        try {
            List<Productobarra> listaProductos = controladorProductoBarra.findWhere(new Productobarra(), "idBarra=" + barra);
            return listaProductos;
        } catch (Exception ex) {
            return null;
        }
    }

    public void devolverProducto(Productobarra productoBarra) {
        ProductoManager pm = new ProductoManager();
        pm.reducirStock(productoBarra.getIdProducto(), productoBarra.getCantidad() * -1);
        controladorProductoBarra.destroy(productoBarra, productoBarra.getIdproductoBarra());

    }

    public void restarStockBarra(Producto producto, int barra, double cantidad) {
        try {
            Productobarra productoBarra = controladorProductoBarra.findWhere(new Productobarra(), "idProducto=" + producto.getIdProductos() + " and idBarra=" + barra).get(0);
            productoBarra.setCantidad(productoBarra.getCantidad()-cantidad);
            controladorProductoBarra.edit(productoBarra);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
